package com.qf.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qf.entity.CartItem;
import com.qf.mapper.CartItemMapper;
import com.qf.service.CartitemService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Service
public class CartitemServiceImpl implements CartitemService {
//    注入
    @Resource
    private CartItemMapper cartItemMapper;
    /**
     *   * 1.@param addBO 添加商品信息
     *   * @param skuQuantity 商品 SKU 的库存，主要用于库存校验
     *
     * @param
     * @return
     */
    @Override
    public int addCartItem(CartItem cartItem) {
        Integer insert = cartItemMapper.insert(cartItem);
        return insert;
    }


    /**
     * 2.查询商品 (返回CartItem)
     * @param memberId
     * @return
     */
    @Override
    public List<CartItem> sumCartItemQuantity(Integer memberId) {
        QueryWrapper<CartItem> qw = new QueryWrapper<>();
//        查询所有
        qw.eq(CartItem.COL_MEMBER_ID,memberId);
//        来源cartItemMapper传入 qw
        final List<CartItem> cartItems = cartItemMapper.selectList(qw);
        return cartItems;
    }

    /**
     * 3.更新购物车
     * @param cartItem
     * @return
     */
    @Override
    public int updateCartItem(CartItem cartItem) {
        final QueryWrapper qw = new QueryWrapper();
        qw.eq(CartItem.COL_MEMBER_ID,cartItem.getMemberId());
        final int updateCartItem = cartItemMapper.update(cartItem,qw);
        return updateCartItem;
    }

    /**
     * 4.删除购物车
     * @param cartItem
     * @return
     */
    @Override
    public int deleteCartItemByMemberId(CartItem cartItem) {
        final QueryWrapper qw = new QueryWrapper();
        qw.eq(CartItem.COL_MEMBER_ID,cartItem.getMemberId());
        int deleteCartItem = cartItemMapper.delete(qw);
        return deleteCartItem;
    }

    /**
     * 5.批量删除购物车信息
     * @param idList
     * @return
     */
    @Override
    public int deleteCartItemByMemberIds(List<Long> idList) {
        return cartItemMapper.deleteBatchIds(idList);
    }

    /**
     * 6.通过like ID返回CartItem集合
     * @param cartItem
     * @return
     */
    @Override
    public List<CartItem> selectCartItemByLikeAndID(CartItem cartItem) {
        QueryWrapper qw = new QueryWrapper();
        Object like = qw.like(CartItem.COL_ID, cartItem.getId());
        qw.eq(CartItem.COL_PRODUCT_ID,cartItem.getProductId());
        final List idLikeList = cartItemMapper.selectList(qw);
        return idLikeList;
    }


    /**
     * 7.通过商品名称查询，然后分页
     * @param page
     * @param state
     * @return
     */
    @Override
    public IPage<CartItem> selectPageCartItemByProduce(Page<CartItem> page, Integer state) {
         QueryWrapper qw = new QueryWrapper();
         qw.like(CartItem.COL_PRODUCT_NAME,"1");
         return cartItemMapper.selectPage(page,qw);
    }



    /*    *//**
     * @param page
     * @param size
     * @return select id,price from 表名   where
     *//*
    @Override
    public List<C> findList(int page, int size) {
//        Car car = carMapper.selectOne();
        // 面向对象操作数据
        QueryWrapper<Car> qw = new QueryWrapper<>();
        //过滤列
        qw.select(Car.COL_ID, Car.COL_PRICE);
        Page<Car> carPage = carMapper.selectPage(new Page<>(page, size), qw);
        List<Car> records = carPage.getRecords();
        return records;
    }*/
}
